package com.hxzy.yygh.user.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hxzy.yygh.common.result.Result;
import com.hxzy.yygh.model.user.UserInfo;
import com.hxzy.yygh.user.service.UserInfoService;
import com.hxzy.yygh.vo.user.UserInfoQueryVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Map;


@Api(tags = "用户管理接口")
@RestController
@RequestMapping("/admin/user")
public class UserController {
    @Autowired
    private UserInfoService userInfoService;

    //获取用户列表方法
    @ApiOperation(value = "获取用户列表")
    @GetMapping("list/{page}/{limit}")
    public Result getUserList(@PathVariable Long page, @PathVariable Long limit, UserInfoQueryVo userInfoQueryVo){
        //传入page和limit,得到分页对象
        Page<UserInfo> pageParam = new Page<>(page, limit);

        //传入分页对象、条件参数对象，返回符合条件分页的用户分页结果
        IPage<UserInfo> pageModel = userInfoService.getByPageAndCondition(pageParam, userInfoQueryVo);

        //返回分页结果
        return Result.ok(pageModel);
    }

    //用户锁定-解锁 方法
    @ApiOperation(value = "用户锁定-解锁 方法")
    @GetMapping("lockOrUnLock/{id}/{status}")
    public Result lockOrUnLock(@PathVariable Long id, @PathVariable Integer status){
        //调用方法，改变用户状态
        userInfoService.updateStatus(id, status);
        //返回成功状态码
        return Result.ok();
    }

    //获得用户详情信息
    @ApiOperation(value = "查看用户详情信息")
    @GetMapping("showUserInfoByUserId/{userId}")
    public Result showUserInfoByUserId(@PathVariable Long userId){
        //调用方法，返回用户详情信息
        Map<String,Object> resultMap = userInfoService.showUserInfoByUserId(userId);
        //返回用户信息
        return Result.ok(resultMap);
    }

    //用户认证审批
    @ApiOperation(value = "用户认证审批")
    @GetMapping("authUser/{id}/{authStatus}")
    public Result authUser(@PathVariable Long id, @PathVariable Integer authStatus){
        //调用方法，改变用户状态
        userInfoService.authUser(id, authStatus);
        //返回成功状态码
        return Result.ok();
    }

}
